
// {{{ imports
import jp.ize.ux.UXRoot;
import jp.ize.ux.UXObject;
import jp.ize.ux.UXRect;
import jp.ize.ux.UXLineStyle;
import jp.ize.ux.UXColor;
import jp.ize.ux.UXMouseEvent;
import jp.ize.ux.components.UXRingBox;
import jp.ize.ux.acts.RingAct;
// }}}

// {{{ class RingBoxDemo
class RingBoxDemo
{
	// {{{ public static function main()

	public static function main()
	{
		var ringb = new UXRingBox(150);
		var a = new RingAct();

		// RingRotateInteraction をMouseDown,MouseWheelで起こすことにする。
		ringb.ctrl.getInteraction("RingRotateInteraction").addReactEvent(UXMouseEvent.DOWN);

		// RingRotateInteraction のデフォルト動作はrotateだが、それに加えてrotateXもすることにする。
		ringb.ctrl.getInteraction("RingRotateInteraction").addAct(a.rotateX(3.0, 20));
		
		// RingShowInteraction をMouseOverのときに起こすことにし、その動作は1.0秒でlayoutすることにする。
 		ringb.ctrl.getInteraction("RingShownInteraction").addReactEvent(UXMouseEvent.OVER);
 		ringb.ctrl.getInteraction("RingShownInteraction").addAct(a.layout(1.0));

		ringb.x = 512;
		ringb.y = 256;
		ringb.addChild(new Img("Pref.png"));
		ringb.addChild(new Sample(100));
		ringb.addChild(new Img("lambda-icon.png", 100));
		ringb.addChild(new Img("Safari.png"));
		ringb.addChild(new Img("ImageCapture.png"));
		ringb.addChild(new Img("TimeMachine.png"));
		ringb.addChild(new Img("iPhoto.png"));
		ringb.addChild(new Img("iTunes.png"));
		ringb.addChild(new Img("mail.png"));
		ringb.addChild(new Img("robot.png"));		
		//		ringb.setBackground(new Sample(100));
		UXRoot.addChild(ringb);
		
		// リングボックスを斜めに傾ける(flash player 10 が必要)
		#if flash10
		ringb.rotationX = -70;
		#end

	}

	// }}}
}
// }}}
// {{{ class Sample extends UXObject
class Sample extends UXObject
{
	// {{{ public function new(d : Int)

	public function new(d : Int)
	{
		super();
		var w = d/2;
		var h = d/2;
		graphics.lineStyle = new UXLineStyle(1.0, new UXColor(0x000000));
		graphics.drawRect(new UXRect(-w, -h, d, d));
		graphics.beginFill(new UXColor(0x00FF00, 0.3));
		graphics.drawRect(new UXRect(-w, -h, d, d));
		graphics.endFill();
	}

	// }}}
}
// }}}
// {{{ class Img extends UXObject
class Img extends UXObject
{
	// {{{ properties

	var _loader: flash.display.Loader;

	// }}}
	// {{{ public function new(filename: String, ?size: Float)
	public function new(filename: String, ?size: Float)
	{
		super();
		try {
			_loader = new flash.display.Loader();
			_loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, onComplete(size));
			_loader.load(new flash.net.URLRequest(filename));
		} catch (err:Dynamic) trace(err);
	}

	// }}}
	// {{{ function onComplete(?size: Float)

	function onComplete(?size: Float)
	{
		var me = this;
		return function (event) {
			var img = me._loader.content;
			me.sprite.addChild(img);
			if (size != null) { img.width = size; img.height = size; }
			img.x = - img.width / 2;
			img.y = - img.height / 2;
		}
	}
	// }}}
}
// }}}
